package com.yuw.collectionsdemo;

import java.util.*;

public class TestDriver {
    public static void main(String[] args) {
        System.out.println("--------------------------------------");
        test01();
        System.out.println("--------------------------------------");
        test011();
        System.out.println("--------------------------------------");
        test012();
    }

    /**
     * Collections集合的应用--set集合 -- treeset
     */
    public static void test012() {
        // hashset集合  : 多态    左侧是父类接口类型；右侧是子类类型 ———— 面向接口的编程思想

        Set set = new TreeSet();
        // 存入元素
        set.add("zhangsan");
        set.add("lisi");
        set.add("wangwu");
        set.add("zhaoliu");
        // 重复元素
        set.add("zhaoliu");
        // 加入null值
        //set.add(null);
        // 取出和遍历元素

        System.out.println("使用Iterator进行Set集合的遍历：");
        // 使用迭代器进行遍历set集合中的元素
        Iterator it = set.iterator();
        // 遍历 hasNext方法用于判定后面还有没有相关的数据；next方法用于取出当前遍历的位置的元素值
        while (it.hasNext()) {
            // 使用next方法取出当前元素的值
            Object obj = it.next();
            System.out.println("  " + obj);
        }

        System.out.println("使用foreach增强型的for循环进行遍历：");
        for (Object obj : set) {
            System.out.println("  " + obj);
        }
    }

    /**
     * Collections集合的应用--set集合 -- linkedhashset
     */
    public static void test011() {
        // hashset集合  : 多态    左侧是父类接口类型；右侧是子类类型 ———— 面向接口的编程思想

        Set set = new LinkedHashSet();
        // 存入元素
        set.add("zhangsan");
        set.add("lisi");
        set.add("wangwu");
        set.add("zhaoliu");
        // 重复元素
        set.add("zhaoliu");
        // 加入null值
        set.add(null);
        // 取出和遍历元素

        System.out.println("使用Iterator进行Set集合的遍历：");
        // 使用迭代器进行遍历set集合中的元素
        Iterator it = set.iterator();
        // 遍历 hasNext方法用于判定后面还有没有相关的数据；next方法用于取出当前遍历的位置的元素值
        while (it.hasNext()) {
            // 使用next方法取出当前元素的值
            Object obj = it.next();
            System.out.println("  " + obj);
        }

        System.out.println("使用foreach增强型的for循环进行遍历：");
        for (Object obj : set) {
            System.out.println("  " + obj);
        }
    }

    /**
     * Collections集合的应用--set集合 -- hashset
     */
    public static void test01() {
        // hashset集合  : 多态    左侧是父类接口类型；右侧是子类类型 ———— 面向接口的编程思想

        Set set = new HashSet();
        // 存入元素
        set.add("zhangsan");
        set.add("lisi");
        set.add("wangwu");
        set.add("zhaoliu");
        // 重复元素
        set.add("zhaoliu");
        // 加入null值
        set.add(null);
        // 取出和遍历元素

        System.out.println("使用Iterator进行Set集合的遍历：");
        // 使用迭代器进行遍历set集合中的元素
        Iterator it = set.iterator();
        // 遍历 hasNext方法用于判定后面还有没有相关的数据；next方法用于取出当前遍历的位置的元素值
        while (it.hasNext()) {
            // 使用next方法取出当前元素的值
            Object obj = it.next();
            System.out.println("  " + obj);
        }

        System.out.println("使用foreach增强型的for循环进行遍历：");
        for (Object obj : set) {
            System.out.println("  " + obj);
        }
    }
}
